home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
data
/
nyan_e2
/
nyane2dl.plp
< prev
next >
Wrap
Text File
|
1993-11-30
|
10KB
|
414 lines
/********** ライブラリからのダウンロード処理をする v1.04a用 **********/
%LibLine {20}; /* ライブラリリストのログが有る場合に取得する行数 (9~99) */
%NoLibLog {50}; /* ライブラリリストのログが無い場合に取得する行数 (9~99) */
%ReadOnes{
%ReqForum @getchar(IndexLine,14,8);
%ReqMes @getchar(IndexLine,23,2);
%fname @head(ReqForum,{ });
%DataFile @head(@getchar(IndexLine,4,3),{ });
%ForumDir logd|{\}|fname;
%ccs1{
case(FMesNO<>ReqMes,{Yes},{
case(FMesNO<>{},{Yes},{
type({RX }|ReqMes|{\n});
FMesNO:=ReqMes;
wait(30,{TimeOut},{\nCCS(N)>},,
{\nCCS(P)>});
});
});
};
%read2{
%LogFile ForumDir|{\MES}|ReqMes|{.LOG};
receive(LogFile);
type(@read(logd|{\UP\MES}|DataFile|{.TXT}));
loop({ wait(3600,{TimeOut},
{\nnext>}, {type({\n}); im({Yes})},
{\nCCS(N)>}, {stoprec; type({RC D\n}); im({No})},
{\nCCS(P)>}, {stoprec; type({RC D\n}); im({No})},
{\n◆現在未読の},{stoprec; im({No})}
);
});
wait(60,{TimeOut},{\nCCS(N)>},,{\nCCS(P)>});
};
footnote({ 個々の発言を取得しています});
case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
GoForum(ReqForum);
type({SET PAUSE OFF\n});
wait(30,{TimeOut},{\nFORUM>});
mkdir(logd,fname);
/* rec2(ForumDir|{\mestitle.log});
type({MES\n});
wait(30,{TimeOut},{\n>});
stoprec;*/
});
case(1<=ReqMes && ReqMes<=21,{Yes},{
test(,{
type({MES }|ReqMes|{\n});
Where3:={MES};
FMesNO:=ReqMes;
wait(60,{TimeOut},{\nCCS(N)>},,{\nCCS(P)>},,{\n>});
},{\nCCS(N)>},{ ccs1;
},{\nCCS(P)>},{ ccs1;
});
test(,,{\nCCS(N)>},{read2},{\nCCS(P)>},{read2});
test(,,{\nCCS(N)>},,{\nCCS(P)>});
});
IndexLine:={済}|@getchar(IndexLine,3,80);
write(SaveFName,IndexLine);
};
%PreRead{
case(@getchar(IndexLine,1,2)={予},
{Yes},{ ReadOnes;
},{No},{write(SaveFName,IndexLine);
});
};
%Read{
delfile(SaveFName);
fopen(IndexFName);
loop({ IndexLine:=@fread;
case(@getchar(IndexLine,8,5),
{Read },{PreRead;
im({Yes});
},{} ,{im({No});
}, ,{write(SaveFName,IndexLine); im({Yes});
});
});
fclose;
copyfile(SaveFName,IndexFName);
};
%DownOne{
var DataSize[4];
%Diskrem{[dir]
var remain[10];
%curdir @getcdir;
%path @body(dir,,{\});
case(@getchar(dir,2,1),
{:},{ case(@setcdir2(path),
{Yes},{remain:=@diskrem;
setcdir(curdir);
},{No},{remain:={-1};
});
}, ,{ remain:=@diskrem;
});
im(remain);
};
%EnterLib{[ReqForum,ReqLib]
case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
%ForumDir logd|{\}|@head(ReqForum,{ });
GoForum(ReqForum);
});
case(Where3<>{LIB} || FLibNO<>ReqLib,{Yes},{
type({LIB }|ReqLib|{\n});
wait(60,{stop},{\nLIB>});
Where3:={LIB};
FLibNO:=ReqLib;
});
};
%DownLib{[ReqProc]
var FNametop[50];
var flag[4];
%ReqForum @getchar(IndexLine,14,8);
%ReqLib @getchar(IndexLine,23,2);
%ReqObj @tail(@getchar(IndexLine,26,5),{ });
%DownFN @getchar(IndexLine,32,80);
%DownDoc @head(@tail(DownFN,{\},{\n}),{.})|{.SUP};
footnote({ ライブラリからのダウンロード処理をしています});
case(@body(DownFN,,{\})={},
{Yes},{ FNametop:=logf|{\};
},{No},{FNametop:=@body(DownFN,,{\})|{\};
});
mkdir(FNametop,{});
delfile(FNametop|DownDoc);
flag:={Yes};
EnterLib(ReqForum,ReqLib);
type({DOWN }|ReqObj|{ PROT:BPL\n});
receive(FNametop|DownDoc);
case(@im(ReqProc),
{予},{
loop({
wait(6000,{TimeOut;
},{参照},{
%size @head(@laststr,{バイト:},{ });
DataSize:=(size / 1024 + 1);
im({Yes});
},{\nmore>},{type({\n}); im({Yes});
},{E:終了)\n:},{
stoprec;
case((@Diskrem(DownFN)/1024)>DataSize,
{Yes},{ type({1\n});
im({Yes});
},{No},{type({E\n});
im({No});
});
},{-該当するデータはありません-\nLIB>},{
stoprec; flag:={No};
im({No});
},{で終了)\n:},{
delfile(FNametop|DownFN);
type(FNametop|DownFN);
im({No});
},{-ダウンロード終了-\nLIB>},{
flag:={No};
im({No});
});
});
case(flag,{Yes},{wait(6000,{TimeOut},{\nLIB>})});
IndexLine:={済}|@getchar(IndexLine,3,80);
write(SaveFName,IndexLine);
},{説},{
loop({
wait(3600,{TimeOut;
},{\nmore>}, {type({\n}); im({Yes});
},{E:終了)\n:},{stoprec;
type({E\n}); im({No});
},{-該当するデータはありません-\nLIB>},{
stoprec; flag:={No};
im({No});
});
});
case(flag,{Yes},{wait(60,{TimeOut},{\nLIB>})});
IndexLine:={保}|@getchar(IndexLine,3,80);
write(SaveFName,IndexLine);
});
};
%PreDownLib{
case(@getchar(IndexLine,1,2),
{予},{DownLib({予});
},{説},{DownLib({説});
},{保},{write(SaveFName,IndexLine);
});
};
%oneLib{[libno]
%mergefile1{[OldName,NewName]
dispoff({Yes});
case(@filechk(NewName),
{Yes}, {command({copy }|NewName|{+}
|OldName|{ }|NewName);
},{No},{command({copy }|OldName|{ }|NewName);
});
dispoff({No});
};
%renfile{[OldName,NewName]
dispoff({Yes});
command({ren }|OldName|{ }|NewName);
dispoff({No})
};
%readdir{
var oldnum[4];
var newnum[4];
%LogFile LibDir|{\LIB}|LibNum|{.LOG};
%BakFile LibDir|{\LIB}|LibNum|{.BAK};
%TmpFile LibDir|{\LIB}|LibNum|{.TMP};
%mergelog{
case(@fopen(LogFile),
{Yes},{
oldnum:=@getchar(@fread(18,{/}),1,4)+{0};
fclose;
case(@fopen(TmpFile),{Yes},{
loop({
%rec @fread(18,{/});
newnum:=@getchar(rec,1,4)+{0};
case(oldnum<newnum,{Yes},{
write(BakFile,rec);
});
im(rec<>{});
});
mergefile1(LogFile,BakFile);
delfile(TmpFile);
delfile(LogFile);
renfile(BakFile,{*.LOG});
});
},{No},{
case(@filechk(TmpFile),{Yes},{
renfile(TmpFile,{*.Log});
});
});
};
FLibNO:=libno;
delfile(BakFile);
case(@fopen(LogFile),
{Yes},{
%rec @fread(18,{/});
oldnum:=@getchar(rec,1,4)+{0};
fclose;
},{No},{
oldnum:={0};
});
delfile(TmpFile);
case(oldnum<>{0},
{Yes},{
type({DIR\n});
receive(TmpFile);
loop({
wait(10000,{TimeOut},
{\nmore>},{
%rec @tail(@head(@laststr(128),{\nmore>}),{\n});
newnum:=@getchar(rec,1,4)+{0};
case(newnum>oldnum,
{Yes},{
type({\n}); im({Yes});
},{No},{
stoprec;type({E\n}); im({No});
});
},{\n>},{
stoprec;type({E\n}); im({No});
},{ありません-\n},{
stoprec;delfile(TmpFile); im({No});
});
});
},{No},{
case(NoLibLog<>{},
{Yes},{ type({SET LINE }|NoLibLog|{\n});
},{No},{type({SET PAGE OFF\n});
});
wait(10,,{\nLIB>});
type({DIR\n});
receive(TmpFile);
wait(10000,{TimeOut},
{\nmore>},{
stoprec;type({E\n}); im({No});
},{\n>},{
stoprec;type({E\n}); im({No});
},{ありません-\n},{
stoprec; delfile(TmpFile); im({No});
});
wait(30,{TimeOut},{\nLIB>});
case(NoLibLog,{},{
type({SET PAGE OFF\n});
wait(30,{TimeOut},{\nLIB>});
});
type({SET LINE }|LibLine|{\n});
});
wait(30,{TimeOut},{\nLIB>});
mergelog;
case(@filechk(LogFile),
{Yes},{ delfile(BakFile);
},{No},{renfile(BakFile,{*.LOG});
});
};
readdir;
};
%LibList{[ReqLib]
%plus{[DATA]
case(@nochar(DATA),1,{im({0}|DATA)},2,{im(DATA)});
};
case(ReqLib<>{},{Yes},{
var f3[50];
f3:=ReqLib;
type({SET PAGE ON\n});
wait(10,,{\n>});
case(LibLine<>{},{Yes},{
type({SET LINE }|LibLine|{\n});
wait(10,,{\n>});
});
loop({
%LibNum @plus(@head(f3,{,}));
f3:=@body(f3,{,});
type({LIB }|LibNum|{\n});
wait(60,,
{\nLIB>},{ oneLib(LibNum);
},{\nmore>},{type({\n});
},{\n>},{
});
im(f3<>{});
});
case(LibLine<>{},{Yes},{
type({SET LINE 25\n});
wait(10,,{\n>},,{\nLIB>});
});
});
};
%GetLibTitle{[ReqForum]
case(Where1<>{FORUM} || Where2<>ReqForum,{Yes},{
%ForumDir logd|{\}|@head(ReqForum,{ });
GoForum(ReqForum);
});
delfile(LibDir|{\LIBTITLE.LOG});
receive(LibDir|{\LIBTITLE.LOG});
type({LIB\n});
wait(60,{},{\n>},{stoprec; LibList(ReqLib)});
};
%DownList{
case(lib<>{} && lib<>0,{Yes},{
var f2[600];
f2:=lib;
loop({
%fnset @head(f2,{/});
%ReqForum @head(fnset,{(});
%ReqLib @body(fnset,{(},{)});
%LibDir logl|{\}|ReqForum;
f2:=@body(f2,{/});
footnote({ ライブラリリストの受信処理をしています});
mkdir(logl,ReqForum);
GetLibTitle(ReqForum);
im(f2<>{})
});
IndexLine:={済}|@getchar(IndexLine,3,80);
write(SaveFName,IndexLine);
});
};
%NEWs{
%NewsNo @tail(@getchar(IndexLine,23,2),{ });
%GoNEW{
type({GO NEW\n});
wait(20,{TimeOut},{\n>});
Where1:={NEW};
type({SET PAGE OFF\n});
wait(30,{TimeOut},{\n>});
};
%TypeM{
type({M\n});
wait(30,{TimeOut},{\n>});
};
case(Where1<>{NEW},{Yes},{GoNEW},{No},{TypeM});
test(,,{\n>},{
mkdir(logd,{MAIL});
receive(logd|{\MAIL\NEW.LOG});
type(NewsNo|{\n});
wait(300,{TimeOut},{\n表示終了\n>},,{下さい◆\n>});
stoprec;
IndexLine:={済}|@getchar(IndexLine,3,80);
write(SaveFName,IndexLine);
});
};
/********** Main Routine **********/
delfile(SaveFName);
fopen(IndexFName);
loop({ IndexLine:=@fread;
case(@getchar(IndexLine,8,5),
{LIB },{PreDownLib; im({Yes});
},{List },{DownList; im({Yes});
},{Read },{PreRead; im({Yes});
},{NEW },{NEWs; im({Yes});
},{} ,{im({No});
}, ,{write(SaveFName,IndexLine); im({Yes});
});
});
fclose;
copyfile(SaveFName,IndexFName);
};
code({sjis});
case(proc={Read},{Yes},{Read},{No},{DownOne});
next:={No};
footnote({});